14. 实现
实现:策略改进
在上一节课,你学到了以下知识:如果给定策略 \pi 对应的动作值函数 q_\pi 的估值 Q ,可以构建一个改进(或对等)的策略 \pi' ,其中 \pi'\geq\pi 。
对于每个状态 s\in\mathcal{S} ,你只需选择最大化动作值函数估值的动作。换句话说,
\pi'(s) = \arg\max_{a\in\mathcal{A}(s)}Q(s,a) ,针对所有 s\in\mathcal{S} 。
你可以在下方找到 策略改进 的完整伪代码。
如果对于某个状态 s\in\mathcal{S} ,其 \arg\max_{a\in\mathcal{A}(s)}Q(s,a) 不是唯一的,则可以灵活地构建改进策略 \pi' 。
实际上,只要策略 \pi' 对于每个 s\in\mathcal{S} 和 a\in\mathcal{A}(s) 都满足:
\pi'(a|s) = 0 如果 a \notin \arg\max_{a'\in\mathcal{A}(s)}Q(s,a') ,
它是改进策略。换句话说,(对于每个状态)任何策略只要为不会最大化动作值函数估值的动作分配概率 0,则对该状态来说就是改进策略。你可以在自己的实现中随意实验这一点!
请在下个部分完成
Dynamic_Programming.ipynb
的
第 3 部分:策略改进
。请记得保存内容!
你可以查看
Dynamic_Programming_Solution.ipynb
的相应部分,检查你的答案是否正确。